<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>运算符</title>
    <script type="text/javascript">
       /*
       运算符也叫操作符
       通过运算符可以对一个或多个值进行运算，并获取运算结果
       eg：typeof 就是运算符，可以来获得一个值的类型，都是已字符串的形式返回的
       除了  +，其余的运算操作，都是将其他数据类型转换成number
        */


       // +：
       // 可以对两个值进行加法运算，如果对两个字符串进行加法运算，则会进行拼串
       //可以将任意的数据类型+一个”“即可将其转换为string类型
       //         eg：  "123"+"456"="123456"
       //**任何值与字符串进行加法运算，都会转换成字符串，然后拼串
         var str="锄禾日当午,"+
                 "汗滴禾下土,"+
                 "谁知盘中餐,"+
                 "粒粒皆辛苦.";
         console.log(str);
         // % 取余
       /*
                                一元运算符
           只需要一个操作数
           + 正号：不会对number类型产生任何影响
           - 负号：对于非number值，会先转换成number，然后再运算
           可以对一个其他类型的数据使用+，来将其转换为number
        */
       var a=123;
       a=-a;
       console.log(a);
       var result=1+ +"2"+3;
       console.log(result);
       /*
                                  自增和自减
         自增++
         自增分为两种：后++（a++）  和前++（++a）
         无论是a++  还是   ++a，都会立即使原变量的值自增1
         不同的是，a++和  ++a的值不同
        */
       var b=1;
       console.log(b++);    //a++是自增前的值
       console.log(++b);    //++a是自增后的值
    /*
         自减--
         无论是a--  还是 --a，都会立即使原变量的值自减1
         不同的是 --a  和a--值不同
         a--表示的为原值
         --a表示的是自减以后的值
     */
       /*
                                  逻辑运算符
         ！ 非       对一个值进行非运算
             非运算就是对一个值进行取反操作  true 变 false。  false 变 true
             如果对一个值两次取反，它不会变化
             如果对非布尔值进行运算，则会将其转换成布尔值，然后再取反
             可以对其他类型的值进行两次非运算，将其转换为boolean 原理和Boolean（）函数一样
          && 与
             第一个值为true，则会判断第二个值
             第一个值为false，则不会判断第二个值
            * 如果两个值中有false，则返回靠前的false *
            *如果第一个值为true，则返回第二个值  *
            *如果第一个值为false，则返回第一个值 *
          || 或
          对于非布尔值进行与或运算时，会先将其转换为布尔值，然后再运算，并返回原值
          如果第一个值为true，则返回第一个值
          如果第一个值false，则返回第二个值
        */
       /*
                                 赋值运算符  =
         a+=5  ==  a=a+5
         a-=5  ==  a=a+5
         a*=5  ==  a=a*5
         a/=5  ==  a=a/5
         a%=5  ==  a=a%5
        */
       /*
                           关系运算符 可以比较两个值的大小关系
      如果关系成立则会返回true，如果关系不成立则返回false
                 >      >=         <           <=
      对于非数值进行比较时，会将其转换成数值，然后进行比较
      如果符号两端的都是字符串进行比较，不会将其转换为数字比较，而会分别比较字符串中的Unicode编码
        */
       //比较字符串时，比较的是字符串的编码
       console.log("a"<"b");
       //比较字符编码时是"对位"进行比较,如果两位一样，则比较下一位
       //eg: ”11“>5 it's false
       //所以可以借用它来对英文进行排序
       console.log("bbc"<"b"); //it's false
       /*
       1. ==：相等运算符
        不同类型的两个值进行判断时，会转换成相同的类型，然后进行比较
       undefined 衍生自null ，所以这两个值做相等判断时，会返回true。
        NaN不和任何值相等，包括他本身   NaN==NaN it's false
       2. ！=：不相等
        ！=也会对变量进行自动的类型转换，如果转互换后相等，它也会返回false。
        3. ===：全等
           用来判断两个值是否完全相等，类型不同，则直接返回false。
        4. ！===：不全等
        用来判断两个值是否不全等，如果类型不同，则直接返回true。
        */
       //可以通过isNaN（）函数来判断一个值是否为NaN

        /*                        条件运算符
          语法： 条件表达式?语句1：语句2;         eg：  a>b? alert("a"): alert("b");
              条件运算符在执行时，首先对条件表达式进行求值，
              如果为true，则执行语句1；并返回结果
              如果为false，则执行语句2；并返回结果
         */
      var max= a>b?(a>c?a:c):(b>c?b:c);
       /*
                                Unicode编码
         在字符串中使用转移字符输入Unicode编码
         形式：\u四位编码 (16进制)
        */
    </script>
</head>
<body>
<!--在网页中使用Unicode编码时：
     形式：&#编码;这里的编码需要的是10进制-->
<h1>&#9760;</h1>
</body>
</html>